/**
 * 将 Data URL 转换为 File 对象
 * @param {string} dataUrl - 输入的 Data URL
 * @param {string} filename - 生成的文件名称（包含扩展名）
 * @returns {File} 转换后的 File 对象
 */
export function dataUrlToFile(dataUrl, filename) {
  // 分割 Data URL 以提取元数据和实际数据
  const [metaData, base64String] = dataUrl.split(',');

  // 提取 MIME 类型
  const mimeTypeMatch = metaData.match(/:(.*?);/);
  const mimeType = mimeTypeMatch ? mimeTypeMatch[1] : 'application/octet-stream';

  // 解码 Base64 字符串
  const decodedData = atob(base64String);

  // 创建一个 Uint8Array 来存储二进制数据
  const uint8Array = new Uint8Array(decodedData.length);
  for (let i = 0; i < decodedData.length; i++) {
    uint8Array[i] = decodedData.charCodeAt(i);
  }

  // 创建并返回 File 对象
  return new File([uint8Array], filename, { type: mimeType });
}
